package com.example.common.util;

import cn.hutool.core.bean.BeanUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName com.example.common.util
 *
 * @author cui haida
 * @version JDK 8
 * 2025/8/5
 */
public class BeanUtils extends BeanUtil {

    /**
     * 单个深度拷贝
     *
     * @param source 源实例化对象
     * @param target 目标对象类（如：User.class）
     * @return 目标实例化对象
     */
    public static <T> T copy(Object source, Class<T> target) {
        return BeanUtil.copyProperties(source, target);
    }

    /**
     * 批量深度拷贝（如果原集合中有null,则自动忽略）
     *
     * @param sourceList 源实例化对象集合
     * @param target     目标对象类（如：User.class）
     * @return 目标实例化对象集合
     */
    public static <T, K> List<K> copyList(List<T> sourceList, Class<K> target) {
        List<K> ans = new ArrayList<>();
        for (T source : sourceList) {
            // 通过BeanUtil转成指定的类型之后加入到集合中
            K k = BeanUtil.copyProperties(source, target);
            ans.add(k);
        }
        return ans;
    }
}